package com.dc.commons.procedure;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.dao.DataAccessException;

import com.dc.commons.procedure.pager.DcPagerResult;

/*******************************************************************************<P>
 * 文件名: DcProcedureCallable.java <br>
 * 版本: 1.0<br>
 * 描述:<br>
 * 版权所有: <br>
 * <P>
 * 创建者: 王建栋 <br>
 * 创建日期: 2016年4月26日 上午10:07:41<br>
 * 修改者: <br>
 * 修改日期: <br>
 * 修改说明: <br>
 ******************************************************************************/
public interface DcProcedureCallable {
	/**
	 * 预处理
	 * @param conn
	 * @param proc
	 * @return CallableStatement
	 * @throws Exception
	 */
	public CallableStatement prepareCall(Connection conn,String proc)throws SQLException;
	
	
	/**
	 *  注册游标，在第一位
	 * @param callableStatement
	 * @throws Exception
	 */
	public void registerOutCursor(CallableStatement callableStatement)throws SQLException;
	
	/**
	 * 执行查询 返回结果集
	 * @param callableStatement
	 * @return ResultSet
	 * @throws Exception
	 */
	public ResultSet executeQuery(CallableStatement callableStatement)throws SQLException, DataAccessException;
	
	/**
	 * 返回游标类型
	 * @return CursorType
	 */
	public int getCursorType();
	
	/***************** Page部分************************/
	
	/**
	 * 预处理
	 * @param conn
	 * @param proc
	 * @return CallableStatement
	 * @throws Exception
	 */
	public CallableStatement preparePagerCall(Connection conn,String proc)throws SQLException;
	
	
	/**
	 *  注册游标，第一位
	 * @param callableStatement
	 * @throws Exception
	 */
	public void registerPagerOutCursor(CallableStatement callableStatement)throws SQLException;
	
	/**
	 * 执行查询 返回结果集
	 * @param callableStatement
	 * @return DcPagerResult
	 * @throws Exception
	 */
	public DcPagerResult executePagerQuery(CallableStatement callableStatement)throws SQLException, DataAccessException;
}
